var moment = require('moment');
var _ = require('underscore');

module.exports = function (app) {
  var result = {
    "app": {
      "appId": 10,
      "appVersionId": 0,
      "appVersionName": "",
      "close": false,// boolean. false:不关闭，true:关闭
      "settings": {
        'switch.http': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.activity': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.ajax': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.webview': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.crash': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.anr': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.frame': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.http.error': true,
        'switch.http.header': true,
        'threshold.activity': 0.4,
        'setting.packages': 'test.package.name'
      } //Map<String,String>
    },
    "versions": []
  };

  for (var i = 0; i < 25; i++) {
    result.versions.push({
      "appId": 10,
      "appVersionId": i + 1,
      "appVersionName": `4.${ (i + 1) }.${ i * 10 }`,
      "close": false,// boolean. false:不关闭，true:关闭
      "settings": {
        'switch.http': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.activity': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.ajax': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.webview': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.crash': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.anr': parseInt(Math.random() * 10) % 2 === 1 ? true : false,
        'switch.frame': parseInt(Math.random() * 10) % 2 === 1 ? true : false
      } //Map<String,String>
    });
  }

  app.get('/mobile/app/:appId/settings', function (req, res) {
    res.status(200).json(result);
  });

  app.post('/mobile/app/:appId/settings', function (req, res) {
    if (req.body && req.body.changes) {
      _.chain(req.body.changes.split('|'))
       .map(p => {
         var segments = p.split(':');

         return {
           appId: parseInt(segments[0]),
           appVersionId: parseInt(segments[1]),
           key: segments[2],
           value: segments[3] === '1' ? true : (
             segments[3] === '0' ? false : segments[3]
           )
         };
        })
        .each(p => {
          if (p.appVersionId === 0) {
            result.app.settings[p.key] = p.value;
          } else {
            _.chain(result.versions)
             .filter(r => r.appVersionId === p.appVersionId)
             .each(r => r.settings[p.key] = p.value);
          }
        });
    }
    res.status(200).json(result);
  });
};
